﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using RMS.Common;
using RMS.DB;

namespace RMS
{
    public partial class frmReset : ICommonForm
    {
        public frmReset()
        {
            InitializeComponent();
            
        }

        private void btnProcess_Click(object sender, EventArgs e)
        {
            StringBuilder strMsg = new StringBuilder();
            //Reset Password
            if (chkResetPassword.Checked)
            {
                strMsg.AppendLine("- Bắt đầu đổi mật khẩu.");
                txtMsg.Text = strMsg.ToString();

                if (File.Exists(Constants.VerifyAdminPath))
                {                    
                    
                    string code = File.ReadAllText(Constants.VerifyAdminPath);
                    var file = new StreamWriter(Constants.VerifyAdminPath);
                    try
                    {
                        var arr = code.Split('#');
                        file.Write(String.Format("{0}#{1}#{2}#{3}", Utilities.Encode("12345678"), arr[1], arr[2], arr[3]));
                    }
                    catch (Exception)
                    {
                        strMsg.AppendLine("- Lỗi đổi mật khẩu.");
                        txtMsg.Text = strMsg.ToString();
                    }
                    finally
                    {
                        file.Close();
                    }

                    strMsg.AppendLine("- Thiết lập mật khẩu mặc định thành công.");
                    txtMsg.Text = strMsg.ToString();

                }
                else
                {
                    strMsg.AppendLine("- Không tìm thấy file " + Constants.VerifyAdminPath);
                    txtMsg.Text = strMsg.ToString();
                }
        
            }

            //Reset solve item and customer
            if (chkResetInvoice.Checked)
            {
                strMsg.AppendLine("- Bắt đầu xóa đơn hàng.");
                txtMsg.Text = strMsg.ToString();

                InvoicesMng mngInvoice = new InvoicesMng();
                var result = mngInvoice.DeleteAll();
                if (result)
                {
                    strMsg.AppendLine("- Xóa đơn hàng thành công.");
                    txtMsg.Text = strMsg.ToString();
                    
                }
                else
                {
                    strMsg.AppendLine("- Xóa đơn hàng thất bại.");
                    txtMsg.Text = strMsg.ToString();
                }               
                
            }

            //Reset customers
            if (chkDeleteAllCustomer.Checked)
            {
                strMsg.AppendLine("- Bắt đầu xóa dữ liệu khách hàng.");
                txtMsg.Text = strMsg.ToString();

                CustomersMng mngCustomer = new CustomersMng();
                var result = mngCustomer.DeleteAll();
                if (result)
                {
                    strMsg.AppendLine("- Xóa khách hàng thành công.");

                }
                else
                {
                    strMsg.AppendLine("- Xóa khách hàng thất bại.");
                }      
            }

            //Delete receipt files
            if (chkDeleteReceipt.Checked)
            {
                strMsg.AppendLine("- Bắt đầu xóa các file hóa đơn.");
                txtMsg.Text = strMsg.ToString();

                string folderReceipt = String.Format("{0}{1}", Environment.CurrentDirectory, Constants.ReceiptsPath);
                string[] filePaths = Directory.GetFiles(folderReceipt);
                if (filePaths != null)
                {
                    try
                    {
                        foreach (var file in filePaths)
                        {

                            if (File.Exists(file) && !file.ToLower().Contains("note.txt"))
                            {
                                File.Delete(file);
                            }
                        }
                    }
                    catch (Exception)
                    {
                        strMsg.AppendLine("- Xóa hóa đơn thất bại.");
                        txtMsg.Text = strMsg.ToString();
                    }

                    strMsg.AppendLine("- Xóa hóa đơn thành công.");
                    txtMsg.Text = strMsg.ToString();
                }
                else
                {
                    strMsg.AppendLine("- Không tìm thấy thư mục hóa đơn. Xóa hóa đơn thất bại.");
                    txtMsg.Text = strMsg.ToString();
                }
                
            }

            //Delete all products
            if (chkDeleteAllProduct.Checked)
            {
                strMsg.AppendLine("- Bắt đầu xóa sản phẩm.");
                txtMsg.Text = strMsg.ToString();

                InventoryMng mng = new InventoryMng();
                var result = mng.DeleteAll();
                if (result)
                {
                    strMsg.AppendLine("- Xóa sản phẩm thành công.");
                    txtMsg.Text = strMsg.ToString();
                }
                else
                {
                    strMsg.AppendLine("- Xóa sản phẩm thất bại.");
                    txtMsg.Text = strMsg.ToString();
                }
                 
            }

            //Delete all product images
            if (chkDeleteAllProductImage.Checked)
            {
                strMsg.AppendLine("- Bắt đầu xóa các file ảnh sản phẩm.");
                txtMsg.Text = strMsg.ToString();

                string folderProductImages = String.Format("{0}\\{1}", Environment.CurrentDirectory, Constants.ImageFilePath);
                string[] filePaths = Directory.GetFiles(folderProductImages);
                if (filePaths != null)
                {
                    try
                    {
                        foreach (var file in filePaths)
                        {

                            if (File.Exists(file) && !file.ToLower().Contains("notes.txt"))
                            {
                                File.Delete(file);
                            }
                        }
                    }
                    catch (Exception)
                    {
                        strMsg.AppendLine("- Xóa file ảnh sản phẩm thất bại.");
                        txtMsg.Text = strMsg.ToString();
                    }

                    strMsg.AppendLine("- Xóa file ảnh sản phẩm thành công.");
                    txtMsg.Text = strMsg.ToString();
                }
                else
                {
                    strMsg.AppendLine("- Không tìm thấy thư mục ảnh sản phẩm. Xóa thất bại.");
                    txtMsg.Text = strMsg.ToString();
                }
            }

            //Delete all barcode
            if (chkDeleteAllBarcode.Checked)
            {
                strMsg.AppendLine("- Bắt đầu xóa các file mã vạch.");
                txtMsg.Text = strMsg.ToString();

                string folderBarcode = String.Format("{0}{1}", Environment.CurrentDirectory, Constants.BarcodeFilePath);
                string[] filePaths = Directory.GetFiles(folderBarcode);
                if (filePaths != null)
                {
                    try
                    {
                        foreach (var file in filePaths)
                        {

                            if (File.Exists(file) && !file.ToLower().Contains("notes.txt"))
                            {
                                File.Delete(file);
                            }
                        }
                    }
                    catch (Exception)
                    {
                        strMsg.AppendLine("- Xóa file mã vạch thất bại.");
                        txtMsg.Text = strMsg.ToString();
                    }

                    strMsg.AppendLine("- Xóa file mã vạch thành công.");
                    txtMsg.Text = strMsg.ToString();
                }
                else
                {
                    strMsg.AppendLine("- Không tìm thấy thư mục mã vạch. Xóa thất bại.");
                    txtMsg.Text = strMsg.ToString();
                }
            }

            btnProcess.Enabled = false;
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
